#include "student.h"
#include <iostream>

Student::Student(const string &nyttNavn, const string &nyttStudnr)
{
	antFag = 0;
	navn = nyttNavn;
	studnr = nyttStudnr;
	for(int i = 0; i < maksAntFag; i++)
	{	
		fagene[i] = "";
		for(int o = 0; o < maksForsok; o++)
		{
			karakter[i][o] = 'X';
		}
	}


}

const string &Student::finnNavn() const
{
	return navn;
}

const string &Student::finnStudnr() const
{
	return studnr;

}

const int Student::finnIndeks(const string &fag) const 
{
	
	for(int i = 0; i < antFag; i++)
	{
		if(fagene[i] == fag)
		{	
			//cout	<< fagene[i] << " " << fag << i <<endl;
			return i;
		}
	}
	if(antFag == 20) return -1;
	//cout << antFag << endl;
	return -2;
}

const char Student::finnBesteKarakter(int indeks) const 
{

	char beste = 'F';
	for(int i = 0; i < maksForsok; i++)
	{
		if(karakter[indeks][i] < beste) beste = karakter[indeks][i];
	}

	return beste;
}
const char Student::finnKarakter(const string &fag) const
{

	int fagIndeks = finnIndeks(fag);

	return finnBesteKarakter(fagIndeks);
}

const char Student::finnSnitt(int &antFagTotalt,int &antStryk) const
{	


	double sum = 0; 
	int teller = 0;
	antStryk = 0;
	antFagTotalt = antFag;
	for(int o = 0; o < antFag; o++)
	{
		char beste = finnBesteKarakter(o);

		if  ( beste == 'A' || beste == 'a')
		{
			sum = sum + 1;
			teller++;
		}
		else if ( beste == 'B' || beste == 'b')
		{
			sum = sum + 2;
			teller++;
		}
		else if ( beste == 'C' ||beste == 'c')
		{
			sum = sum + 3;
			teller++;
		}
		else if ( beste == 'D' ||beste == 'd')
		{
			sum = sum + 4;
			teller++;
		}
		else if ( beste == 'E' ||beste == 'e')
		{
			sum = sum + 5;
			teller++;
		}else if(beste == 'F' ||beste == 'f')
			antStryk++;
	}

	if (teller == 0) return 'F';


	cout << sum << " " << teller << endl;
	sum = sum/teller;


	if( 	 sum <= 1.5) return 'A';
	if(1.5 < sum <= 2.5) return 'B';
	if(2.5 < sum <= 3.5) return 'C';
	if(3.5 < sum <= 4.5) return 'D';
	if(4.5 < sum	   ) return 'E';



}

status Student::settKarakter(const string &fagNavn, char nyKarakter)
{
	int indeks = finnIndeks(fagNavn);

	if(indeks == -1) return ikkePlassTilFlereFag;
	else if(indeks == -2)
	{	
		//cout << fagNavn << endl;

		fagene[antFag] = fagNavn;
		karakter[antFag][0]  = nyKarakter;
		antFag++;
		return ok;
	}
	cout << nyKarakter << endl;
	if(!(('F' > nyKarakter) && (nyKarakter > 'A'))) return ikkeGyldigKarakter; 

	
	for(int i = 0; i < maksForsok; i++)
	{
		if(karakter[indeks][i] == 'X')
		{
			karakter[indeks][i] = nyKarakter;
			return ok;
		}
	}

	return ikkePlassTilFlereForsok;

	
}


